import axios from 'axios'
import qs from 'qs'

const BASEURL = process.env.VUE_APP_BASEURL
const TOKEN = process.env.VUE_APP_APP_TOKEN

// const APP_KEY = process.env['VUE_APP_APP_KEY']
// const APP_SECRET = process.env['VUE_APP_APP_SECRET']

let service = axios.create({
  baseURL: BASEURL,
  timeout: 15 * 1000,
  headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }
})

let load = document.querySelector('.load')

// 请求拦截器
service.interceptors.request.use(function (config) {
  setDefaultParams(config)
  load.style.display = 'block'
  return config
}, function (error) {
  return Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(function (response) {
  load.style.display = 'none'
  return response
}, function (error) {
  return Promise.reject(error)
})

function setDefaultParams (config) {
  if (config.method.toLowerCase() === 'post') {
    // 如果是post请求，由于后台是采用的 application/x-www-form-urlencoded 表单形式来接收的数据，所以需要把数据序列化一下，后台才能接收到
    config.data = qs.stringify(config.data)
  } else if (config.method.toLowerCase() === 'file') {
    config.method = 'post'
    if (config.data && config.data instanceof Object) {
      let params = new FormData()
      for (let key in config.data) {
        params.append(key, config.data[key])
      }
      config.data = params
    }
  }
  if (config.url.indexOf('?') > 0) {
    config.url = config.url + '&token=' + TOKEN
  } else {
    config.url = config.url + '?token=' + TOKEN
  }
  // console.log(config)
}

export function request (config = {}) {
  return service.request(config).then((res) => {
    return res.data
  })
}





